package com.practice.references;

import java.util.ArrayList;

/**
 * 强引用：
 * 1. 最普遍的引用；
 * 2. 具有强引用对象垃圾收集器即使发生 OOM 也不会轻易回收它
 * 3. 通过 New 关键创建出来的就是强引用: Object o = new Object();
 * 4. 通过显示的 null 来弱化强引用: o = null; 如 ArrayList 中的 clear 方法:
 * <code>
 *     public void clear() {
 *         modCount++;
 *
 *         // clear to let GC do its work
 *         for (int i = 0; i < size; i++)
 *             elementData[i] = null;
 *
 *         size = 0;
 *     }
 * </code>
 */
public class FinalizationReferences {
    public static void main(String[] args) {
        // o 属于强引用类型
        Object o = new Object();
        // 弱化强引用
        o = null;

        ArrayList<Integer> a = new ArrayList<>(6);
        for (int i = 0; i < 8; i++) {
            a.add(i);
        }
        a.stream().forEach(item -> {
            System.out.println(item);
        });
        a.clear();
    }
}
